1. Field of the Invention
The present invention relates to computer systems. More specifically, the present invention relates to a computer system that includes a Universal Serial Bus (“USB”).
2. Description of the Related Art
Personal computer (“PC”) systems in general and IBM compatible PC systems in particular have attained widespread use. These PC systems handle information and primarily give independent computing power to a single user (or a relatively small group of users in the case of a PC network). Such computer systems are generally inexpensively priced for purchase by individuals or small businesses and provide computing power to many segments of today's modem society.
A computer system can usually be defined as a desktop, floor-standing, or portable microcomputer that includes a system unit having a central processing unit (“CPU” or a “processor”), volatile and/or non-volatile memory, a display monitor, a keyboard, one or more floppy diskette drives, a hard disk storage device, an optional DVD or CD-ROM drive, and an optional printer. A computer system also includes a commercially available operating system, such as Microsoft Windows™ or Linux. A computer system may also include one or a plurality of peripheral devices such as input/output (“I/O”) devices coupled to the system processor to perform specialized functions. Examples of I/O devices include keyboard interfaces with keyboard controllers, floppy diskette drive controllers, modems, sound and video devices, specialized communication devices, and even other computer systems communicating with each other via a network. These I/O devices are typically plugged into connectors of computer system I/O interfaces such as serial interfaces and parallel interfaces, for example. Generally, these computer systems use a system board or motherboard to electrically interconnect these devices.
Computer systems also typically include basic input/output system (“BIOS”) programs to ease programmer/user interaction with the computer system devices. More specifically, BIOS provides a software interface between the system hardware and the operating system/application program. The operating system (“OS”) and application program typically access BIOS rather than directly manipulating I/O ports, registers, and control words of the specific system hardware. Well known device drivers and interrupt handlers access BIOS to, for example, facilitate I/O data transfer between peripheral devices and the OS, application program, and data storage elements. BIOS is accessed through an interface of software interrupts and contains a plurality of entry points corresponding respectively to the different interrupts. In operation, BIOS is typically loaded from a BIOS ROM or BIOS EPROM, where it is nonvolatily stored, to main memory from which it is executed. This practice is referred to as “shadowing” or “shadow RAM” and increases the speed at which BIOS executes.
Although the CPU provides the “kernel” of the computer system, I/O communication between an I/O device and the CPU forms a basic feature of computer systems. Many I/O devices include specialized hardware working in conjunction with OS specific device drivers and BIOS routines to perform functions such as information transfer between the CPU and external devices, such as modems and printers, coupled to I/O devices.
The USB is an example of one such type of an I/O device coupled to the computer system. The USB peripheral bus specification standard was developed by companies representing the PC and telecommunications industry. Specifically, the USB technology standard was established through a cooperative effort of Compaq Corp., Digital Equipment Corp., IBM PC Co., Intel Corp., Microsoft Corp., NEC Corp., and Northern Telecom Corp. The USB standard and its hardware and software implementation are well-known in the computer industry. The USB brings the plug-and-play capability of computer peripherals outside the PC computer system. This eliminates the need to install cards into dedicated computer slots, reconfigure the system each time a peripheral is attached or detached from the PC and resolve potential IRQ conflicts. Computer systems equipped with USB allow computer peripherals to be automatically configured when physically attached without the need to reboot or run setup. The USB allows multiple USB compatible devices, potentially up to 127, to run simultaneously on a computer system, with peripherals such as monitors and keyboards functioning as additional plug-in sites or hubs.
The USB bus topology enables USB devices to be connected with a USB host. There are two types of personalities for a USB device: a hub and a function. The hub is a device, which provides additional attachment points for the USB. The function provides capabilities to the computer system, e.g., an ISDN connection, a digital joystick, a speaker, a keyboard, a mouse, etc. There is usually one host computer on any USB system. The USB interface to the host computer system, e.g., the computer system, is referred to as the host controller. The USB host controller may be implemented in a combination of hardware, firmware, or software. A root hub is integrated within the host system to provide one or more attachment points. A device endpoint refers to a uniquely identifiable portion of a USB device (hub or function) that is a source or sink of information in a communication flow between host and USB device.
All USB bus transactions typically involve the transmission of up to three packets of information. Each transaction begins when the USB host controller sends a USB packet describing the type and direction of transaction, the USB device address, and endpoint number. This packet is referred to as the token packet. The USB device that is addressed by the token packet selects itself by decoding the appropriate address fields of the token packet. In a given transaction, data is transferred either from the host to a device or from a device to the host. The direction of data transfer is specified in the token packet. The source of the transaction then sends a handshake packet indicating whether the transfer was successful.
Currently there is support for two USB host controller standards. The USB Open Host Controller Interface (“OHCI”) host controller standard is primarily supported by Compaq, Inc., amongst others. The Universal Host Controller Interface (“UHCI”) is primarily supported by Intel, Inc. amongst others. With reference to the Universal Host Controller Interface standard, the USB host controller (“UHC”) is responsible for scheduling USB bus transactions. The USB host controller implements a 1024-element array, referred to as the frame list, where each element (or entry) included in the frame list provides a pointer to the USB transactions that should be processed within 1 millisecond period, referred to as the predefined time slot. Every millisecond, the next consecutive element in the frame list is processed in a sequential, round-robin manner. Thus, the frame list requires 1024 milliseconds (“ms”) to process all the 1024 possible elements or entries in the frame list before it recycles.
The following is hereby incorporated by reference: The Universal Bus Specification, Revision 2.0, published Apr. 27, 2000; Universal Host Controller Interface (UHCI) Design Guide, Revision 1.1, March 1996, published by Intel, Inc.; and OpenHCI—Open Host Controller Interface Specification for USB, Revision 1.0a, October 1996, published by Compaq, Inc.